Electronic systems and circuits have made a significant contribution towards the advancement of modern society and are utilized in a number of applications to achieve advantageous results. Numerous electronic technologies such as digital computers, calculators, audio devices, video equipment, and telephone systems have facilitated increased productivity and reduced costs in analyzing and communicating data, ideas and trends in most areas of business, science, education and entertainment. Electronic systems designed to provide these benefits often include integrated circuits on a single substrate that provide a variety advantages over discrete component circuits. However, traditional design and manufacturing approaches for integrated circuits are often very complex and consume significant resources.
Electronic systems often rely upon a variety of components included in integrated circuits to provide numerous functions. Microcontrollers are one example of integrated circuit components with characteristics that are potentially useful in a variety of applications. For example, microcontrollers are typically reliable and relatively economical to produce. Microcontrollers have evolved since they were first introduced and have substantially replaced mechanical and electromechanical components in numerous applications and devices. However, while traditional microcontrollers have some characteristics that are advantageous, they also tend to be limited in the number of applications in which any given microcontroller integrated circuit can be utilized.
Traditionally each microcontroller is custom designed precisely for a narrow range of applications with a fixed combination of required peripheral functionalities. Developing custom microcontroller designs with particular fixed peripherals is time and resource intensive, typically requiring separate and dedicated manufacturing operations for each different microcontroller (which is particularly expensive for small volume applications). Even if a microcontroller may suffice for more than one application, the range of those applications may be somewhat limited. For example, completely different and totally separate integrated circuits are generally used for disparate applications such as monitoring ambient temperature over time and transmitting the time/temperature data to a remote location, or detecting light and controlling the operation of a motor, or playing an audio recording and receiving/checking digital security information.
Application specific integrated circuits (ASICs) may appear to address some of the above issues, but they can present significant hurdles. ASICs tend to require sophisticated design expertise, high development costs, and large volume requirements. To the extent some flexibility may be provided by the inclusion of gate arrays or other logic devices, the traditional approaches remain expensive and require a sophisticated level of design expertise. In addition, traditional integrated circuit configurations and configuration are typically set during initial manufacture and are not readily adaptable to changing conditions in the field.
Traditional integrated circuits typically have a predetermined set configuration and configuration that do not conveniently facilitate dynamic changes. Typically, one set of components is included and set to perform one function and a second set of components perform another function. Many applications require a variety of different functions, resulting in significantly increased resource commitments where the configuration is “hard-wired” into the design. Providing circuit components dedicated to single functions may results in less than the most efficient utilization of those dedicated components. For example, numerous functions in a variety of applications are performed infrequently or intermittently, and the valuable resources committed to these activities sit idle for much of the time. In addition, in some applications, functions are performed sequentially, with a second group of components dedicated to later activities sitting idle waiting on input from a first group of components dedicated to earlier activities, and when the first group of components has finished, they sit idle while the second group performs their dedicated function.
Similarly, the purpose of particular external ports or pins is typically fixed, and traditional systems typically dedicate external ports or pins to very precise, well-defined purposes. Accomplishing additional or different interactions with external components sometimes requires additional dedicated external ports or pins which consume valuable resources that are typically limited. Some dedicated external ports or pins may be utilized infrequently (e.g., only on start-up) and/or required to wait while activities proceed via other external ports or pins.
What is desired is an interface, system and method that enables dynamic reconfiguration of a programmable device in a convenient and efficient manner.